home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / earcd / misc / pdflib / bindings / tcl / pdfclock.tcl < prev   
Text File  |  1999-01-01  |  2KB  |  106 lines

  1. #!/usr/local/bin/tclsh
  2. # PDFlib client: pdfclock example in Tcl
  3. # (C) Thomas Merz 1998
  4.  
  5.  
  6. # simple loading the shared-library:
  7. load ./pdflib.so
  8.  
  9. # using pdflib as package:
  10. # lappend is unnecessary if installed at some right place
  11.  
  12. lappend auto_path .
  13. package require pdflib
  14.  
  15. # doesn't yet work
  16. #namespace import pdflib::*
  17.  
  18. set RADIUS 200.0
  19. set MARGIN 20.0
  20.  
  21. set fp [fopen pdfclock.pdf w]
  22. set ip [PDF_get_info]
  23.  
  24. PDF_info_Creator_set $ip "pdfclock.tcl"
  25. PDF_info_Author_set $ip "Thomas Merz"
  26. PDF_info_Title_set $ip "PDF clock (Tcl)"
  27.  
  28. set p [PDF_open $fp $ip]
  29.  
  30. PDF_begin_page $p [expr 2 * ($RADIUS + $MARGIN)] [expr  2 * ($RADIUS + $MARGIN)]
  31.  
  32. PDF_set_transition $p trans_wipe
  33. PDF_set_duration $p 0.5
  34.  
  35. PDF_translate $p [expr $RADIUS + $MARGIN] [expr $RADIUS + $MARGIN]
  36. PDF_setrgbcolor $p 0.0 0.0 1.0
  37. PDF_save $p
  38.  
  39. # minute strokes
  40. PDF_setlinewidth $p 2.0
  41. for {set alpha  0} {$alpha < 360} {set alpha [expr $alpha + 6]} {
  42.     PDF_rotate $p 6.0
  43.     PDF_moveto $p $RADIUS 0.0
  44.     PDF_lineto $p [expr $RADIUS-$MARGIN/3] 0.0
  45.     PDF_stroke $p
  46. }
  47.  
  48. PDF_restore $p
  49. PDF_save $p
  50.  
  51. # 5 minute strokes
  52. PDF_setlinewidth $p 3.0
  53. for {set alpha  0} {$alpha < 360} {set alpha [expr $alpha + 30]} {
  54.     PDF_rotate $p 30.0
  55.     PDF_moveto $p $RADIUS 0.0
  56.     PDF_lineto $p [expr $RADIUS-$MARGIN] 0.0
  57.     PDF_stroke $p
  58. }
  59.  
  60. # HACK. How to translate this into Tcl?
  61. #time(&timer)
  62. #ltime = *localtime(&timer)
  63.  
  64. set tm_hour 16
  65. set tm_min 20
  66. set tm_sec 46
  67.  
  68. # draw hour hand
  69. PDF_save $p
  70. PDF_rotate $p [expr -(($tm_min/60.0) + $tm_hour - 3.0) * 30.0]
  71. PDF_moveto $p [expr -$RADIUS/10] [expr -$RADIUS/20]
  72. PDF_lineto $p [expr $RADIUS/2] 0.0
  73. PDF_lineto $p [expr -$RADIUS/10] [expr $RADIUS/20]
  74. PDF_closepath $p
  75. PDF_fill $p
  76. PDF_restore $p
  77.  
  78. # draw minute hand
  79. PDF_save $p
  80. PDF_rotate $p [expr -(($tm_sec/60.0) + $tm_min - 15.0) * 6.0]
  81. PDF_moveto $p [expr -$RADIUS/10] [expr -$RADIUS/20]
  82. PDF_lineto $p [expr $RADIUS * 0.8] 0.0
  83. PDF_lineto $p [expr -$RADIUS/10] [expr $RADIUS/20]
  84. PDF_closepath $p
  85. PDF_fill $p
  86. PDF_restore $p
  87.  
  88. # draw second hand
  89. PDF_setrgbcolor $p 1.0 0.0 0.0
  90. PDF_setlinewidth $p 2
  91. PDF_save $p
  92. PDF_rotate $p [expr -(($tm_sec - 15.0) * 6.0)]
  93. PDF_moveto $p [expr -$RADIUS/5] 0.0
  94. PDF_lineto $p $RADIUS 0.0
  95. PDF_stroke $p
  96. PDF_restore $p
  97.  
  98. # draw little circle at center
  99. PDF_circle $p 0 0 [expr $RADIUS/30]
  100. PDF_fill $p
  101.  
  102. PDF_restore $p
  103.  
  104. PDF_end_page $p
  105. PDF_close $p
  106.